package com.sitemap.domain;

import com.sitemap.util.FileWriter;

import java.util.List;
import java.util.Objects;

/**
 * 站点地图
 *
 * @author Hugo
 */
public class SiteMap {
    /**
     * xml的头部信息
     */
    private XmlHead xmlHead;

    /**
     * xml的urlSet
     */
    private UrlSet urlSet;

    /**
     * xml的url
     */
    private List<Url> urls;

    public void setXmlHead(XmlHead xmlHead) {
        this.xmlHead = xmlHead;
    }

    public void setUrlSet(UrlSet urlSet) {
        this.urlSet = urlSet;
    }

    public void setUrls(List<Url> urls) {
        this.urls = urls;
    }

    /**
     * @param docDir  生成文件的指定地址
     * @param docName 指定生成的文件名称，不包括类型，仅用于生成xml文件
     * @return 生成是否成功
     * @Description 该方法实现将指定的站点地图信息在指定位置生成指定文件名的xml文件
     */
    public boolean siteMapCreate(String docDir, String docName) {
        boolean flag = true;
        StringBuilder docContent = new StringBuilder("");
        xmlHead = (Objects.isNull(xmlHead)) ? new XmlHead() : xmlHead;
        urlSet = (Objects.isNull(urlSet)) ? new UrlSet() : urlSet;
        if (urls == null || urls.isEmpty()) {
            return false;
        }
        docContent.append(xmlHead.getInfo()).append("\n").append(urlSet.getHeadInfo()).append("\n");
        Url url;
        for (Url value : urls) {
            url = value;
            if (url != null) {
                docContent.append(url.createUrl()).append("\n");
            }
        }
        docContent.append(urlSet.getTailInfo());
        // 以上部分生成了待输入到文本中的文件信息，下面将字符串生成到文本文件中
        String fileRealPath = docDir + "/" + docName + ".xml";
        flag = new FileWriter().writeStrToFile(docContent.toString(), fileRealPath);
        return flag;
    }

}
